Particle flow training of bayesian neural network

ABSTRACT

Discussed herein are devices, systems, and methods for training and operating a Bayesian neural network (BNN). A method can include initializing particles that each individually represent pointwise values of respective NN parameters of NNs that collectively represent a distribution of parameters of the BNN, optimizing, using training particle flow, the particles resulting in optimized distributions for the parameters, determining a prediction distribution using the optimized distributions for the parameters and predictions from each of the NNs, and providing a marginalized distribution representative of the prediction distribution.

TECHNICAL FIELD

Embodiments discussed herein regard devices, systems, and methods for training a Bayesian neural network (NN) using a technique based on particle flow.

BACKGROUND

Most NNs provide point estimates without a direct uncertainty metric or confidence. Standard NNs can also have relatively poor performance on open sets. Bayesian NNs (BNNs) learn statistical distributions of weights, providing a statistical environment in which decision uncertainty and confidence can be determined. The pre-existing training techniques for BNNs include Hamiltonian Monte Carlo, variational inference (both Monte Carlo and deterministic), probabilistic back propagation, and standard particle filter. These training methods are computationally expensive and require a relatively large amount of data for training.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates, by way of example, a block diagram contrasting a standard DL architecture and a BNN.

FIG. 2 illustrates, by way of example, a diagram of an embodiment of an NN.

FIG. 3 illustrates, by way of example, a flow diagram of an embodiment of an NN training procedure using training particle flow.

FIG. 4 illustrates, by way of example, histograms of respective predictions made by a BNN before training.

FIG. 5 illustrates, by way of example, histograms of respective predictions made by the BNN after 120 training updates using training particle flow.

FIG. 6 illustrates, by way of example, histograms of respective predictions made by the BNN with selected Fashion-MNIST samples as input.

FIG. 7 illustrates, by way of example, a histogram representing variance for MNIST input into the BNN trained using training particle flow and Fashion-MNIST input into the BNN trained using training particle flow.

FIG. 8 is a block diagram of an example of an environment including a system for NN training, according to an embodiment.

FIG. 9 illustrates, by way of example, a block diagram of an embodiment of a machine in the example form of a computer system within which instructions, for causing the machine to perform any one or more of the methodologies discussed herein, may be executed.

DETAILED DESCRIPTION

Embodiments address a problem of providing a prediction and corresponding uncertainty in a network trained, with a priority of performing well using a sparse dataset for training and open-set detection. Deep learning (DL) is widely embraced across several industries as a means for achieving autonomy. Example industries include self-driving cars, medical diagnostics, bioinformatics, manufacturing, and radar. While DL has demonstrated state-of-the art performance in some tasks, uncertainty quantification remains a global challenge and an active area of research. Example tasks include computer vision, speech recognition, and natural language processing. Uncertainty quantification in decision-making is critical for any industry with automation, especially in high-stakes situations. Not only can uncertainty quantification help reduce overconfident decisions, but uncertainty quantification can also help a computer choose a more realistic human response. A more realistic human response can be helpful for any automated system interacting with humans or environments occupied by humans.

FIG. 1 illustrates, by way of example, a block diagram contrasting a standard DL architecture 102 and a BNN 104. Standard DL architectures provide point estimates for model predictions (output 108) and network parameters (weights of nodes 112). Such DL architectures 102 do not provide a direct route towards quantifying uncertainty. Instead, standard DL architectures 102 rely on indirect methods for estimating uncertainty. Common methods include using entropy and confidence scores and functions, as well as application specific methods. Bayesian DL architectures 104 and statistical methods tend to offer a more natural landscape for quantifying uncertainty.

BNN has been researched at least since 1992 and continues to be a growing field. BNN techniques use Bayes' theorem as a guide to solve for a posterior probability distribution of weights (distribution of nodes 114) in an NN. The computational intractability of solving Bayes' Theorem for DL tasks has led to development of numerous approaches for estimating the posterior distribution of weights in the NN. Well known approaches for BNN optimization include Hamiltonian Monte Carlo, Monte Carlo Variational Inference, Deterministic Variational Inference, and Probabilistic Back Propagation (PBP).

An output 110 of the BNN 104 is a distribution, per class as compared to the output of the NN 102 which provides a score per class as the output 108. The distribution of the output 110 can be a natural consequence of using a distribution (“dist”), instead of scalar weights as in the nodes 112, to represent the activation function of the node 114.

Deep ensembles and stochastic regularization techniques provide an alternate approach towards estimating uncertainty in DL. While these techniques do not optimize Bayes' Theorem, they do provide a statistical landscape to compute predictive uncertainty, in a fraction of the computational cost as BNNs. These statistical methods have been used in a variety of applications for uncertainty quantification.

A common theme among the existing Bayesian NNs and statistical approaches is extremely large training sets and training over thousands of epochs. However, real world datasets are commonly sparse and may not be sufficient to train a typical NN with thousands of parameters. Embodiments provide an NN architecture that can quantify uncertainty and can also perform robustly in the limit of sparse datasets and on open-set problems.

Embodiments use a modified form of a particle flow technique that is commonly used in particle filters but altered and repurposed to train a BNN. The modified form of the particle flow method is called “training particle flow” herein. Particle flow is a method for optimizing Bayes' Theorem that has been used exclusively (up until now), in the particle filtering context. Numerical experiments for particle flow, in the context of Particle Filtering, show that particle flow can reduce the computational complexity by many orders of magnitude relative to standard particle filters or other state-of-the-art algorithms for the same filter accuracy. Moreover, particle flow can reduce the filter errors by many orders of magnitude relative to an extended Kalman filter or other state-of-the-art algorithms for difficult nonlinear non-Gaussian problems.

While particle methods have recently emerged for optimizing NNs, using particle flow to optimize a BNN has not been done before to the best of the inventors' knowledge. Results of a BNN trained to perform a classification task with MNIST {0,1} demonstrate a high predictive accuracy with very few training samples. Further, the BNN trained to perform the classification task had a strong capability for measuring predictive uncertainty using variance in the network's predictions.

Particle Flow

Consider a system with an internal state, s, with a measurement, m. Bayes' theorem relates the posterior probability of the state given the measurement, p(s|m), to the prior distribution of the state, p(s), and the likelihood of the measurement given the state, p(m|s), according to

$\begin{matrix} {{p\left( s \middle| m \right)} = {\frac{{p\left( {m❘s} \right)}{p(s)}}{p(m)}.}} & \left( {{Eqn}.1} \right) \end{matrix}$

Here p(m)=∫ p( |s)p(s)ds is the evidence, which behaves as a normalization constant. The measurement, m, is a quantity that helps characterize what the internal state is or will be. Given a general Markov process with a set of noisy measurements, {m}, particle filters provide a method to estimate the internal state(s) {s} of the system using Bayes' Theorem as a guide.

Particle flow is a method used in a particle filtering context to estimate an optimal posterior distribution of internal states per each measurement. Particle flow optimizes Bayes' theorem by evolving the prior distribution to the posterior distribution along a log-homotopy,

log p(s, λ|m)=λ log p(m|s)+log p(s)−log K(λ, m).  (Eqn. 2)

Two continuous functions in respective space are called homotopic if one continuous function can be “continuously deformed” into the other continuous function. A homotopy exists between functions that can be so deformed.

Here K(λ, m)=∫ p(m|s)^(λ)p(s)ds normalizes the posterior distribution p(s, λ|m) for each λ. The scalar homotopy parameter λ=[0,1] evolves the distribution from the prior to the posterior for a given measurement, m. Each particle represents a single realization of the internal state, s, of the system. The flow of particles along the log-homotopy is described by a stochastic differential equation (SDE),

ds={right arrow over (f)}(s, λ)dλ+BdW  (Eqn. 3)

where {right arrow over (f)} is a drift velocity, B is a diffusion matrix, and dW is a differential of a Weiner process.

The evolution of a posterior distribution of particles can be characterized by a Fokker-Planck equation (where the diffusion-squared matrix is defined as Q_(ij)=Σ_(k)B_(ik)B_(jk)),

$\begin{matrix} {\frac{\partial{p\left( {s,{\lambda ❘m}} \right)}}{\partial\lambda} = {{- {\overset{\rightarrow}{\nabla} \cdot \left( {{p\left( {s,{\lambda ❘m}} \right)}\overset{\rightarrow}{f}} \right)}} + {\frac{1}{2}{\sum_{ij}\frac{\partial^{2}\left( {{p\left( {s,{\lambda ❘m}} \right)}Q_{ij}} \right)}{{\partial x_{i}}{\partial x_{j}}}}}}} & \left( {{Eqn}.4} \right) \end{matrix}$

Here the gradients and derivatives as written in Eqn. (4) are with respect to Cartesian coordinates; however, Eqn. (4) can be used with any orthogonal coordinate system of choice by properly transforming the partial derivatives.

Various solutions for the drift velocity {right arrow over (f)} and diffusion matrix Q have been found for specific choices of the prior and likelihood functional forms or whether the evolution is deterministic or stochastic. The Gromov solution for the drift velocity and diffusion matrix is,

{right arrow over (f)}−[λ({right arrow over (∇)}{right arrow over (59 )}^(T) log p(m|s))+({right arrow over (∇)}{right arrow over (∇)}^(T) log p(s))]⁻¹{right arrow over (∇)} log p(m|s)  Eqn. 5)

Q=[λ{right arrow over (∇)}{right arrow over (∇)}^(T) log p(m|s)+{right arrow over (∇)}{right arrow over (∇)}^(T) log p(s)]⁻¹(−{right arrow over (∇)}{right arrow over (∇)}^(T) log p(m|s))[λ{right arrow over (∇)}{right arrow over (∇)}^(T) log p(m|s)+{right arrow over (∇)}{right arrow over (∇)}^(T) log p(s)]⁻¹  (Eqn. 6)

where {right arrow over (∇)}{right arrow over (∇)}^(T) is a Hessian matrix. The Hessian matrix is a square matrix of second-order partial derivatives of a scalar-valued function that describe local curvature of a function of variables. The Gromov solution for the diffusion matrix requires the prior and likelihood to have a Gaussian functional form and a linear relationship between the measurement and state with Gaussian white noise.

The Geodesic solution assumes the Gromov solution for the drift velocity and no diffusion (i.e., Q=0); however, it does not simultaneously satisfy Eqn. 2 and Eqn. 4. The zero-curvature solution assumes the particles do not accelerate with varying λ and there is no diffusion term (i.e., Q=0). This solution has a drift velocity proportional to the Gromov drift velocity.

DL and Supervised Learning Tasks

DL is a branch of ML that uses a series of layers of nodes to learn higher order representations of data for a supervised, semi-supervised, or unsupervised learning task. While embodiments described focus on supervised learning tasks, embodiments can be applied to any learning task for which a likelihood function can be defined.

Supervised learning tasks can use a deep NN (DNN) to learn a relationship between input and output data for either regression or classification. For a regression task, the NN can predict the dependent variable

that is causally related to the input data; for a classification task, the network predicts the probability

_(j) of a particular class. The word “probability” is a slight misnomer here. Classification tasks often use a SoftMax activation function in an output layer to produce a vector in which its elements sum to one. While this output represents a set of class probabilities, these “probabilities” are not necessarily well calibrated to the actual accuracy of the network. In this sense, the output probabilities can be more accurately understood as a normalized score for each class. During training, the NN predictions can be evaluated against the corresponding truth class or truth values, y_(T), of the input data, and the network weights can be adjusted using a chosen optimization scheme.

A “likelihood” function is used in many gradient-based optimization methods in DL. For regression tasks, the likelihood,

, of truth variable, y_(T), given NN weights θ={θ_(i)} and network prediction,

, is commonly modeled by a Normal Distribution,

$\begin{matrix} {{\mathcal{L}\left( {{y_{T}❘\theta},} \right)} = {\frac{1}{\sqrt{\left( {2\pi} \right)^{k}{❘\sum ❘}}}{\exp\left\lbrack {- \frac{1}{2}\left( {y_{T} -} \right)^{T}{\sum^{- 1}\left( {y_{T} -} \right)}} \right\rbrack}}} & \left( {{Eqn}.7} \right) \end{matrix}$

Here Σ is a covariance matrix that scales error between the truth, y_(T), and predictions,

, and index, k, represents a dimensionality of y_(T). This likelihood function assumes Gaussian white noise discrepancies between the prediction,

, and truth, y_(T). A corresponding log-likelihood is given by,

$\begin{matrix} {{{\log\mathcal{L}} = {- {\frac{1}{2}\left\lbrack {{k\log 2\pi} + {\log{❘\sum ❘}} + {\left( {y_{T} -} \right)^{T}{\sum^{- 1}\left( {y_{T} -} \right)}}} \right\rbrack}}},} & \left( {{Eqn}.8} \right) \end{matrix}$

which is reminiscent of the Mean Squared Error (MSE) when Σ is the identity matrix.

For classification tasks, a categorical distribution describes the likelihood,

, of the true class, y_(T), of an input given the predicted class probabilities,

_(j), j ∈[1, n_(class)] and NN weights θ,

(y _(T)|θ,

)=Π_(j)

_(j) ^(y) ^(T,j) ,   (Eqn. 9)

where y_(T)={y_(Tj)} is a one-hot encoded vector, or a non-binary vector that sums to one if using soft labels, of the truth class of the image. The corresponding log-likelihood is the negative of cross-entropy function,

log

=log[Π_(j)

_(j) ^(y) ^(Tj) ]=Σ_(j) y _(Tj) log

_(j).  (Eqn. 10)

Mapping Particle Flow for Training BNNs

FIG. 2 illustrates, by way of example, a diagram of an embodiment of an NN 200. The NN 200 includes L layers of nodes. The L-layer NN, ∧_(θ), has a set of network parameters θ={θ_(j)}={W¹, b¹, W², b², . . . , W^(L), b^(L)}, which includes all the weights and biases. The NN 200 has a total of N_(param) parameters, such that the network parameter θ is a N_(param)-dimensional vector, θ ∈

^(N) ^(params) .

In a typical supervised learning task, a set of training data

={

,

_(T)} is used to train the NN 200. Here

={x_(j)} is the set of all inputs and

_(T)={y_(T,j)} is the corresponding set of all truth values given

. Each NN prediction

_(j) results from a series of 2L compositions on the data, ∧_(θ)=(σ^(L) ∘ g^(L) ∘ σ^(L−1) , , , ∘ σ¹ ∘ g¹),

_(j)=∧_(θ)(x _(j))  (Eqn. 11)

where σ describes an activation function for each layer of nodes and g describes an affine transformation at each layer nodes.

The goal of BNNs is to learn an optimal posterior distribution of network parameters p(θ|

) given the data using Bayes' Theorem,

$\begin{matrix} {{p\left( {\theta ❘\mathcal{D}} \right)} = {{p\left( {\theta ❘\left\{ {X,{\mathcal{y}}_{T}} \right\}} \right)} = {\frac{{\mathcal{L}\left( {{{\mathcal{y}}_{T}❘\theta},X} \right)}{p(\theta)}}{p\left( {{\mathcal{y}}_{T}❘X} \right)}.}}} & \left( {{Eqn}.12} \right) \end{matrix}$

Here p(θ) describes the prior distribution on the network parameters, {θ_(j)},

(

_(T)θ,

)=

(

_(T)|∧_(θ)(

)) describes the likelihood of the truth values

_(T) given the NN predictions

=∧_(θ)(

) (see Eqns. (7) and Eqn. (9)). A normalization factor in Eqn. (12) is defined as p(

_(T)|

)=∫

(

_(T)|θ,

)p(θ)dθ.

Note that the right hand side of Eqn. (12) follows from a reduction of the full expression of the posterior probability,

${{p\left( {\theta ❘\left\{ {X,{\mathcal{y}}_{T}} \right\}} \right)} = \frac{{\mathcal{L}\left( {{{\mathcal{y}}_{T}❘\theta},X} \right)}{p\left( {X❘\theta} \right)}{p(\theta)}}{\int{{\mathcal{L}\left( {{{\mathcal{y}}_{T}❘\theta},X} \right)}{p\left( {X❘\theta} \right)}{p(\theta)}d\theta}}},$

where the denominator is the evidence p({

,

_(T)})=∫

(

_(T)|θ,

)p(

|θ)p(θ)dθ. Given the conditional independence of the inputs

on the network parameters θ, the conditional probability becomes p(

|θ)=p(

)p(θ). Substituting this into the full expression for the posterior probability reproduces the RHS of Eqn. (12),

${p\left( {\theta ❘\left\{ {X,{\mathcal{y}}_{T}} \right\}} \right)} = {\frac{\left\lbrack {{\mathcal{L}\left( {{{\mathcal{y}}_{T}❘X},\theta} \right)}{p(\theta)}} \right\rbrack{p(X)}}{\left\lbrack {\int{{\mathcal{L}\left( {{{\mathcal{y}}_{T}❘\theta},X} \right)}{p(\theta)}d\theta}} \right\rbrack{p(X)}} = {\frac{{\mathcal{L}\left( {{{\mathcal{y}}_{T}❘\theta},X} \right)}{p(\theta)}}{\left\lbrack {\int{{\mathcal{L}\left( {{{\mathcal{y}}_{T}❘\theta},X} \right)}{p(\theta)}d\theta}} \right\rbrack} = {\frac{{\mathcal{L}\left( {{{\mathcal{y}}_{T}❘\theta},X} \right)}{p(\theta)}}{p\left( {{\mathcal{y}}_{T}❘X} \right)}.}}}$

Embodiments map particle flow, used in the particle filtering context, to the DL context, resulting in training particle flow, by equating the internal states {s} and the measurements {m} in Eqn. (1) to the network parameters θ and truth values

_(T), respectively, in Eqn. (12). Each particle, under these equalities, now represents a single realization of network parameters {θ_(j)}. Training particle flow evolves the values of the network parameters {θ_(j)} in the NN with homotopy scalar λ. The likelihood of each measurement, m, given the internal state, s, is replaced by a likelihood of the truth value,

_(T), given the prediction,

, of the network 200 based on the input data,

. In the DL context, each particle represents a single realization of network parameters {θ_(j)}.

A mapping of particle flow as used in the particle filtering context to training particle flow is mathematically described in Eqn. (13)-Eqn. (15).

$\begin{matrix} {{p\left( {s❘m} \right)} = {{\frac{{p\left( {m❘s} \right)}{p(s)}}{p(m)}\rightarrow{p\left( {\theta ❘\left\{ {X,{\mathcal{y}}_{T}} \right\}} \right)}} = \frac{{\mathcal{L}\left( {{{\mathcal{y}}_{T}❘\theta},X} \right)}{p(\theta)}}{p\left( {{\mathcal{y}}_{T}❘X} \right)}}} & \left( {{Eqn}.13} \right) \end{matrix}$ m→

_(T)  (Eqn. 14)

s→θ, dθ={right arrow over (f)}dλ=BdW  (Eqn. 15)

The log-homotopy constraint given in Eqn. (3) becomes,

log p(θ,λ|{

,

_(T)})=λ log

(

_(T)|θ,

)+log p(θ)−log p(λ

_(T)|

)  Eqn. 16)

where the scalar homotopy parameter, λ, was added to the notation of the posterior distribution and the normalization factor to designate the variance of these terms on λ. The corresponding gradients and derivatives as written in Eqn. (4) are now with respect to the network parameters for training particle flow,

$\begin{matrix} {\frac{\partial{p\left( {\theta,{\lambda ❘\left\{ {X,{\mathcal{y}}_{T}} \right\}}} \right)}}{\partial\lambda} = {{- {{\overset{\rightarrow}{\nabla}}_{\theta} \cdot \left( {{p\left( {\theta,{\lambda ❘\left\{ {X,{\mathcal{y}}_{T}} \right\}}} \right)}\overset{\rightarrow}{f}} \right)}} + {\frac{1}{2}{\sum_{i,j}\frac{\partial^{2}\left( {{p\left( {\theta,{\lambda ❘\left\{ {X,{\mathcal{y}}_{T}} \right\}}} \right)}Q_{ij}} \right)}{{\partial\theta_{i}}{\partial\theta_{j}}}}}}} & \left( {{Eqn}.17} \right) \end{matrix}$

Eqn. 18 shows a mathematical representation of drift velocity in training particle flow using the Gromov expression,

{right arrow over (f)}=−[λ({right arrow over (∇)}_(θ){right arrow over (∇)}_(θ) ^(T) log

)+({right arrow over (∇)}_(θ){right arrow over (∇)}_(θ) ^(T) log p(θ))]⁻¹{right arrow over (∇)}_(θ) log

.  (Eqn. 18)

The Gromov expression generalizes well to architectures with L≥1 layers, varying activation functions, and arbitrary prior and likelihood functional forms. However, Eqn. (18) only satisfies Eqn. (16)-(17) when the NN 200 has a single layer with a linear activation function, ∧_(θ)(

)=σ¹ ∘ g¹(

)=g¹(

), the prior and likelihood have a Gaussian functional form, and Q is given by Eqn. (6).

Eqn. 19 provides a mathematical representation of a constant diffusion matrix used in the particle flow training,

Q=α ID,   (Eqn. 19)

where α ∈

_(>0) is a positive real number and Id is the identity matrix. A constant diffusion matrix can help provide numerical stability. Additionally, adding a small amount of noise can prevent: the network training from getting stuck in local minima. A small exponential damping factor can also be added to the diffusion matrix to reduce the impact of noise with increasing number of weight updates,

Q=α exp[−β(update #)]Id,  (Eqn. 20)

where β>0 scales the rate of damping.

NN Training Procedure Using Training Particle Flow

FIG. 3 illustrates, by way of example, a flow diagram of an embodiment of an NN training procedure using training particle flow. The procedure includes initialization 320, training particle flow optimization 322, and prediction 324.

The initialization 320 includes a user choosing, or a computer automatically instantiating, a functional form of a likelihood and prior at operation 326. The initialization 320 includes sampling the chosen prior distribution p(θ) at operation 328. Sampling initializes each realization of the NN that is optimized at optimization 322. If a multivariate normal distribution is chosen as the prior at operation 326, the corresponding Hessian has a simple analytical form,

p(θ)˜

(θ; μ, Γ),  (Eqn. 20)

{right arrow over (∇)}_(θ){right arrow over (∇)}_(θ) ^(T) log p(θ)=Γ⁻¹.  (Eqn. 21)

where μ is a mean vector and Γ is a covariance matrix. The mean adds an initial offset to the values of the network parameters. The mean can be set to zero for simplicity and to avoid adding an incorrect offset. However, an offset can be known and used. The values of Γ characterize the initial spread of each network parameter and potential correlations. The values can be chosen to be large enough to encourage fast learning, yet small enough to discourage divergences in the network.

For the likelihood functions, Eqn. (7) or (9) can be used depending on the type of supervised learning task. The residual covariance in Eqn. (7) can be chosen similarly to the prior covariance (e.g., to promote learning, yet to prevent divergences). The number of particles, N, can be chosen to be large enough to provide sufficient statistics on the data and to avoid divergences in the covariance matrix.

The particle flow optimization 322 can be described as follows:

-   For each data point in the training set (x_(i),y_(T,j)) ∈     (select data from training set at operation 330):     -   Equate the current distribution of particles to the prior         distribution of the particles.     -   Calculate the covariance of the prior distribution of particles,         Γ.     -   Loop iteratively through the scalar homotopy parameter λ=[0,1]         (operation 332)         -   For each λ_(k), k=1,2, . . . , N_(λ)−1             -   Calculate integration step size, δλ=λ_(k+1)−λ_(k)             -   For each particle {θ_(i)}, i=1,2,3 . . . , N: (operation                 334)                 -   Pass data input x_(j) through network (operation                     334) using particle's values to get a prediction

_(j)=∧_(θ) _(i) (x_(j))

-   -   -   -   -   Calculate gradients and hessians of the                     log-likelihood with respect to network parameters                     (operation 336)                 -   Calculate the drift f and diffusion matrix Q                     (operation 338)                 -   Update state of particle using numerical integration                     of stochastic differential equation (SDE) (Eqn. 15)                     (operation 340)

θ_(i)θ_(i) +fδλ+√{square root over (Qδλ)} n, n˜

(0, Id)

At operation 330, a pair of input and output values is selected from the data set. At operation 332, the operation 322 iterates through discretized steps of the homotopy parameter λ. At operation 334, a particle state of the N particle states from operation 328 is selected and data can be passed through the selected NN. A result of operation 334 can be a prediction. At operation 336 the gradients (derivatives) and Hessians are calculated. Drifts and diffusions are determined based on the gradients and Hessians at operation 338. At operation 340, particle states are updated.

Particle flow uses numerical integration to integrate Eqn, (15). An interpolation of the scalar homotopy parameter λ={λ_(k): k ∈[1, N_(λ)]}, at operation 332) for the numerical integration can be based on a linear, log, or adaptive scale. The number of divisions N_(λ) of the scalar homotopy parameter can be balanced by integration accuracy and algorithm efficiency. While there are several different methods of numerical integration for SDE, Euler-Maruyama method can be used for computation efficiency.

In prediction 324, an output prediction can be provided at operation 342. A marginalized probability distribution of the output prediction given a new input is determined at operation 344. The unmarginalized predictive distribution for an output prediction

given a new input x′, the training data

, and the particles θ is,

p(

′|x′,D,θ)=∧_(θ)(x′)p(θ|D)  (Eqn. 21)

Marginalizing Eqn. (21) over all network realizations θ gives the predictive distribution of an output prediction

′ given a new input x′ and the training data D,

p(

′|x′,D)=∫ p(

′|x′,D,θ)dθ  (Eqn. 22)

Embodiments can evaluate Eqn. (22) using a Monte Carlo sampling of the posterior distribution p(θ|D), where the sampling is over all particles {θ_(i)},

$\begin{matrix} {{{p\left( {{❘x^{\prime}},\mathcal{D}} \right)} \approx {\frac{1}{N}{\sum_{i = 1}^{N}{p\left( {{❘x^{\prime}},\mathcal{D},\theta_{i}} \right)}}}} = {\frac{1}{N}{\sum_{i = 1}^{N}{\Lambda_{\theta_{i}}\left( x^{\prime} \right)}}}} & \left( {{Eqn}.23} \right) \end{matrix}$

As is seen, the predictive distribution is a marginalization of the posterior with the network prediction, which is a sum over network parameters.

Hessian Approximation

One component of the drift calculation, at operation 338, is the Hessian of the log-likelihood with respect to the network parameters. A full Hessian is computationally intractable for almost all, but the smallest of NNs. A Gauss-Newton Hessian approximation provides an effective means to estimate the full Hessian of a system. Matrix elements of the Hessian are

( ∇ → "\[Rule]" θ ∇ → "\[Rule]" θ T log ⁢ ℒ ) ij ≈ ∑ m ∑ k ∂ ∂ θ i ⁢ ∂ 2 log ⁢ ℒ ⁢ ∂ ∂ θ j , ( Eqn . 24 )

where

_(m) is the m-th component of the network prediction. Note that the subscript on the prediction corresponding to the indices of the data, as written in Eqn. (11), have been dropped for simplicity.

In the regression case, the output of the L-layer neural network is a prediction of the dependent variable

. Using the likelihood described in Eqn. (7), the corresponding Hessian term in Eqn. (24) is

∂ 2 log ⁢ ℒ = - [ ∑ - 1 ] km , ( Eqn . 25 )

where Σ is the covariance matrix that scales the error between the truth value and prediction in the likelihood.

In the classification case, the output of the L-layer neural network is a set of class probabilities, {

_(j)}. The gradient of the log-likelihood (Eqn. (9)) with respect to the output probabilities

_(m) is singular when the predicted class probability of the truth class is zero. To avoid numerical instabilities, derivatives can be taken with respect to the L-th layer output prior to the softmax activation, z_(m) ^(L).

The Hessian term in the Gauss-Newton Approximation,

$\frac{{\partial^{2}\log}\mathcal{L}}{{\partial z_{m}^{L}}{\partial z_{k}^{L}}},$

in the classification case evaluates to,

$\begin{matrix} {{\frac{\partial^{2}}{{\partial z_{m}^{L}}{\partial z_{k}^{L}}}\left\lbrack {\log\mathcal{L}} \right\rbrack} = {{- \delta_{mk}} + .}} & \left( {{Eqn}.26} \right) \end{matrix}$

Diagonal Approximation

To reduce computational costs, the Gauss-Newton Hessian Approximation can be performed per network weight. This performance of the Gauss-Newton Hessian Approximation per network weight is called the “diagonal approximation” herein. The diagonal approximation sets all off-diagonal elements of the Hessian to zero. The diagonal matrix elements of the Hessian are,

$\begin{matrix} {H_{\theta_{i}} = {\left( {{{\overset{\rightarrow}{\nabla}}_{\theta}{{\overset{\rightarrow}{\nabla}}_{\theta}^{T}\log}}\mathcal{L}} \right)_{i} \approx {\sum_{m}{\sum_{k}{\frac{\partial\left( a_{m}^{L} \right)^{T}}{\partial\theta_{i}}\frac{{\partial^{2}\log}\mathcal{L}}{{\partial a_{m}^{L}}{\partial a_{k}^{L}}}{\frac{\partial a_{k}^{L}}{\partial\theta_{i}}.}}}}}} & \left( {{Eqn}.27} \right) \end{matrix}$

It is clear from Eqn. (27) that this approximation removes all correlations between network parameters in the Hessian. The reduced Hessian, the Hessian with all correlations between network parameters removed, can be vectorized under this approximation, which significantly reduces the memory required to store the full Hessian. For consistency, all correlations in the prior can be removed by taking only the diagonal elements of the prior covariance [Γ]_(ii) (e.g., the prior variance).

Under these approximations, the vector components of the drift velocity simplify to,

$\begin{matrix} {f_{i} = {\frac{1}{\left( {\Gamma_{ii}^{- 1} - {\lambda H_{\theta_{i}}}} \right)}{\frac{{\partial\log}\mathcal{L}}{\partial\theta_{i}}.}}} & \left( {{Eqn}.28} \right) \end{matrix}$

The drift velocity can be calculated fully without matrix inversion or multiplication and can be cast as the Hadamard product of the gradient of the log-likelihood times a scaling vector (e.g., (Γ_(ii) ⁻¹−λH_(θ) _(i) )⁻¹).

To demonstrate how well training particle flow works, results for a binary classification problem are provided. The “training” data includes a subset of digits {0, 1} from the Modified National Institute of Standards and Technology (MNIST) database. The MNIST database was created by Yann LeCun, Corinna Cortes, and Christopher J. C. Burges using images from two separate NIST databases. The MNIST database can be accessed at http://yann.lecun.com/exdb/mnist/. Due to the fact this is a binary problem, a basic convolutional network architecture consisting of two convolutional layers (each with just four filters) followed by a dense output layer. This network has a total of 286 network parameters (i.e., the sum of the total weights and bias). The test data consists of the traditional MNIST testing set (limited to the two digits “0” and “1”). This amounts to a total of 2,115 test images.

By approximating the particle flow equations using the diagonal approximation, simulations involving 200 particles can be run for training the network. These particles are each initialized with an initial covariance matrix. Table 2 provides a summary of network and particle flow settings used to achieve these results.

TABLE 2 LIST OF TRAINING PARTICLE FLOW PARAMETERS USED TO ACHIEVE RESULTS Table 2: List of Parameters used in Results Initial Prior Covariance Γ = 0.04 Id, Id = Identity Diffusion Matrix constant α = 0.1 Interpolation Scheme Logarithmic Scheme with and # Divisions N_(λ) = 10 Number of Particles N = 200 Number of Network Layers L = 3; 2 Convolutional, 1 Output Number of Network Parameters N_(params) = 286

It can be instructive to look at a couple test predictions using these initialized particles. Note that the network predictions are probabilities for each class instead of a specific class. For example, after passing an image of a “1” through the network, the output prediction might be

=(0.2, 0.8), meaning that the network predicts the image is class “0” with probability 0.2 and is class “1” with probability 0.8.

FIG. 4 illustrates, by way of example, histograms of respective predictions made by a BNN before training. FIG. 4 shows that the initial predictions are roughly 50/50 (as expected) for each of four inputs.

The training process can be constructed such that the classes are alternated, such that the training particle flow technique uses an image of a “one”, followed by an image of a “zero” and so forth. Such alternating can help reduce the particle bias towards one of the classes. Note that this alternating procedure can be carried out in the more general case of multiple classes.

FIG. 5 illustrates, by way of example, histograms of respective predictions made by the BNN after 120 training updates using training particle flow. Note that this is only 60 samples per class in these results. For comparison, standard NNs use the entire MNIST training dataset, which consists of roughly 6,000 training images per class.

One can see, based on FIG. 5 , that the network has low variance (can be interpreted as high confidence) in images (A) and (B), Images A and B “look” like a “standard” one and zero. It is also clear that images (C) and (D) in FIG. 5 are less “standard” looking, and also have higher variance in their predictions.

For comparison against a standard classification metric, one can calculate the accuracy of the network trained using training particle flow by using the mean of the predicted distribution. Doing this with the above network and update procedure, a 99.9% (2113/2115) accuracy was achieved. This is on par with standard training techniques. However, it is important to emphasize here that one gains a measure of uncertainty or confidence based on the variance in the predictions.

To further highlight the power of the training particle flow, one can look at the results when a network trained using training particle flow is shown images that are not a zero or one. The Fashion-MNIST dataset provides such images. Fashion-MNIST is described in Fashion-MNIST: a Novel Image Dataset for Benchmarking Machine Learning Algorithms. Han Xiao, Kashif Rasul, Roland Vollgraf. arXiv:1708.07747. The Fashion-MMIST dataset consists of images of clothing and accessories. Results obtained using the Fashion-MNIST dataset as test dataset are shown in FIG. 6 . It is clear that the variance in the predictive distribution is much greater for each Fashion-MNIST test case as compared to the MNIST test case.

In this setting, a threshold can be set on the variance in which above this given threshold, the network is essentially saying “I'm not sure what the correct class prediction is.” In contrast, standard NN predictions have zero predictive variance, and must rely on other methods to estimate uncertainty. To make this point clearer, a histogram of the variances of predictions using the MNIST dataset vs the Fashion-MNIST dataset as input can be informative.

FIG. 7 illustrates, by way of example, a diagram of a line graph representing variance for MNIST input into the BNN trained using training particle flow and Fashion-MNIST input into the BNN trained using training particle flow. Even though the BNN was only shown 120 total images (60 images of zeros and 60 images of ones) during training, there is a clear separation of the predictive variance between the MNIST and Fashion-MNIST dataset.

AI is a field concerned with developing decision-making systems to perform cognitive tasks that have traditionally required a living actor, such as a person. NNs are computational structures that are loosely modeled on biological neurons. Generally, NNs encode information (e.g., data or decision making) via weighted connections (e.g., synapses) between nodes (e.g., neurons). Modern NNs are foundational to many AI applications, such as speech recognition.

Many NNs are represented as matrices of weights that correspond to the modeled connections. NNs operate by accepting data into a set of input neurons that often have many outgoing connections to other neurons. At each traversal between neurons, the corresponding weight modifies the input and is passed to an activation function. The result of the activation function is then transmitted to another neuron further down the NN graph. The process of weighting and processing, via activation functions, continues until an output neuron is reached; the pattern and values of the output neurons constituting the result of the ANN processing.

The correct operation of most NNs relies on accurate weights. However, NN designers do not generally know which weights will work for a given application. NN designers typically choose a number of neuron layers or specific connections between layers including circular connections. A training process may be used to determine appropriate weights by selecting initial weights. In some examples, the initial weights may be randomly selected. Training data is fed into the NN and results are compared to an objective function that provides an indication of error. The error indication is a measure of how wrong the NN's result is compared to an expected result. This error is then used to correct the weights. Over many iterations, the weights will collectively converge to encode the operational data into the NN. This process may be called an optimization of the objective function (e.g., a cost or loss function), whereby the cost or loss is minimized.

Gradient descent is a common technique for optimizing a given objective (or loss) function. The gradient (e.g., a vector of partial derivatives) of a scalar field gives the direction of steepest increase of this objective function. Therefore, adjusting the parameters in the opposite direction by a small amount decreases the objective function in general. After performing a sufficient number of iterations, the parameters will tend towards a minimum value. In some implementations, the learning rate (e.g., step size) is fixed for all iterations. However, small step sizes tend to take a long time to converge, whereas large step sizes may oscillate around a minimum value or exhibit other undesirable behavior. Variable step sizes are usually introduced to provide faster convergence without the downsides of large step sizes.

After a forward pass of input data through the neural network, backpropagation provides an economical approach to evaluate the gradient of the objective function with respect to the network parameters. The final output of the network is built from compositions of operations from each layer, which necessitates the chain rule to calculate the gradient of the objective function. Backpropagation exploits the recursive relationship between the derivative of the objective with respect to a layer output and the corresponding quantity from the layer in front of it, starting from the final layer backwards towards the input layer. This recursive relationship eliminates the redundancy of evaluating the entire chain rule for the derivative of the objective with respect to each parameter. Any well-known optimization algorithm for backpropagation may be used, such as stochastic gradient descent (SGD), Adam, etc.

FIG. 8 is a block diagram of an example of an environment including a system for NN training, according to an embodiment. The system can aid in training of a cyber security solution according to one or more embodiments. The system includes an artificial NN (ANN) 805 that is trained using a processing node 810. The processing node 810 may be a central processing unit (CPU), graphics processing unit (GPU), field programmable gate array (FPGA), digital signal processor (DSP), application specific integrated circuit (ASIC), or other processing circuitry. In an example, multiple processing nodes may be employed to train different layers of the ANN 805, or even different nodes 807 within layers. Thus, a set of processing nodes 810 is arranged to perform the training of the ANN 805.

The set of processing nodes 810 is arranged to receive a training set 815 for the ANN 805. The ANN 805 comprises a set of nodes 807 arranged in layers (illustrated as rows of nodes 807) and a set of inter-node weights 808 (e.g., parameters) between nodes in the set of nodes. In an example, the training set 815 is a subset of a complete training set. Here, the subset may enable processing nodes with limited storage resources to participate in training the ANN 805.

The training data may include multiple numerical values representative of a domain, such as a word, symbol, other part of speech, or the like. Each value of the training or input 817 to be classified once ANN 805 is trained, is provided to a corresponding node 807 in the first layer or input layer of ANN 805. The values propagate through the layers and are changed by the objective function.

As noted above, the set of processing nodes is arranged to train the neural network to create a trained neural network. Once trained, data input into the ANN will produce valid classifications 820 (e.g., the input data 817 will be assigned into categories), for example. The training performed by the set of processing nodes 807 is iterative. In an example, each iteration of the training the neural network is performed independently between layers of the ANN 805. Thus, two distinct layers may be processed in parallel by different members of the set of processing nodes. In an example, different layers of the ANN 805 are trained on different hardware. The members of different members of the set of processing nodes may be located in different packages, housings, computers, cloud-based resources, etc. In an example, each iteration of the training is performed independently between nodes in the set of nodes. This example is an additional parallelization whereby individual nodes 407 (e.g., neurons) are trained independently. In an example, the nodes are trained on different hardware.

FIG. 9 illustrates, by way of example, a block diagram of an embodiment of a machine in the example form of a computer system 900 within which instructions, for causing the machine to perform any one or more of the methodologies discussed herein, may be executed. In a networked deployment, the machine may operate in the capacity of a server or a client machine in server-client network environment, or as a peer machine in a peer-to-peer (or distributed) network environment. The machine may be a personal computer (PC), a tablet PC, a set-top box (STB), a Personal Digital Assistant (PDA), a cellular telephone, a web appliance, a network router, switch or bridge, or any machine capable of executing instructions (sequential or otherwise) that specify actions to be taken by that machine. Further, while only a single machine is illustrated, the term “machine” shall also be taken to include any collection of machines that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methodologies discussed herein.

The example computer system 900 includes a processor 902 (e.g., a central processing unit (CPU), a graphics processing unit (GPU) or both), a main memory 904 and a static memory 906, which communicate with each other via a bus 908. The computer system 900 may further include a video display unit 910 (e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)). The computer system 900 also includes an alphanumeric input device 912 (e.g., a keyboard), a user interface (UI) navigation device 914 (e.g., a mouse), a mass storage unit 916, a signal generation device 918 (e.g., a speaker), a network interface device 920, and a radio 930 such as Bluetooth, WWAN, WLAN, and NFC, permitting the application of security controls on such protocols.

The mass storage unit 916 includes a machine-readable medium 922 on which is stored one or more sets of instructions and data structures (e.g., software) 924 embodying or utilized by any one or more of the methodologies or functions described herein. The instructions 924 may also reside, completely or at least partially, within the main memory 904 and/or within the processor 902 during execution thereof by the computer system 900, the main memory 904 and the processor 902 also constituting machine-readable media.

While the machine-readable medium 922 is shown in an example embodiment to be a single medium, the term “machine-readable medium” may include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that store the one or more instructions or data structures. The term “machine-readable medium” shall also be taken to include any tangible medium that is capable of storing, encoding, or carrying instructions for execution by the machine and that cause the machine to perform any one or more of the methodologies of the present invention, or that is capable of storing, encoding, or carrying data structures utilized by or associated with such instructions. The term “machine-readable medium” shall accordingly be taken to include, but not be limited to, solid-state memories, and optical and magnetic media. Specific examples of machine-readable media include non-volatile memory, including by way of example semiconductor memory devices, e.g., Erasable Programmable Read-Only Memory (EPROM), Electrically Erasable Programmable Read-Only Memory (EEPROM), and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks.

The instructions 924 may further be transmitted or received over a communications network 926 using a transmission medium. The instructions 924 may be transmitted using the network interface device 920 and any one of a number of well-known transfer protocols (e.g., HTTP). Examples of communication networks include a local area network (“LAN”), a wide area network (“WAN”), the Internet, mobile telephone networks, Plain Old Telephone (POTS) networks, and wireless data networks (e.g., WiFi and WiMax networks). The term “transmission medium” shall be taken to include any intangible medium that is capable of storing, encoding, or carrying instructions for execution by the machine, and includes digital or analog communications signals or other intangible media to facilitate communication of such software.

ADDITIONAL NOTES AND EXAMPLES

Example 1 includes a method for training and operating a Bayesian neural network (BNN), the method comprising initializing particles that each individually represent pointwise values of respective NN parameters of NNs that collectively represent a distribution of parameters of the BNN, optimizing, using training particle flow, the particles resulting in optimized distributions for the parameters, determining a prediction distribution using the optimized distributions for the parameters and predictions from each of the NNs; and providing a marginalized distribution representative of the prediction distribution.

In Example 2, Example 1 can further include, wherein training particle flow includes a particle flow technique used in a Daum-Huang particle filter with internal states and measurements replaced with the weights and truth values, respectively.

In Example 3, at least one of Examples 1-2 can further include, wherein each particle within the set of particles represents all NN network parameters of an instantiation of the NNs that collectively represent the distribution of parameters of the BNN.

In Example 4, at least one of Examples 1-3 can further include, wherein training particle flow includes iteratively evolving values of the network parameters along a log-homotopy.

In Example 5, at least one of Examples 1-4 can further include, wherein training particle flow includes using a Gauss-Newton approximation to a Hessian matrix in determining drift and diffusion of the particles.

In Example 6, Example 5 can further include, wherein training particle flow includes using a diagonal approximation to the Gauss-Newton approximation.

In Example 7, Example 6 can further include, wherein the diagonal approximation includes performing Gauss-Newton approximation per weight.

Example 8 includes a non-transitory machine-readable medium including instructions that, when executed by a machine, cause the machine to perform operations for training and operating a Bayesian neural network (BNN) comprising initializing particles that each individually represent pointwise values of respective NN parameters of NNs that collectively represent a distribution of parameters of the BNN, optimizing, using training particle flow, the particles resulting in optimized distributions for the parameters, determining a prediction distribution using the optimized distributions for the parameters and predictions from each of the NNs, and providing a marginalized distribution representative of the prediction distribution.

In Example 9, Example 8 can further include, wherein training particle flow includes a particle flow technique used in a Daum-Huang particle filter with internal states and measurements replaced with the weights and truth values, respectively.

In Example 10, at least one of Examples 8-9 can further include, wherein each particle within the set of particles represents all NN network parameters of an instantiation of the NNs that collectively represent the distribution of parameters of the BNN.

In Example 11 at least one of Examples 8-10 can further include, wherein training particle flow includes iteratively evolving values of the network parameters along a log-homotopy.

In Example 12, at least one of Examples 8-11 can further include, wherein training particle flow includes using a Gauss-Newton approximation to a Hessian matrix in determining drift and diffusion of the particles.

In Example 13, Example 12 can further include, wherein training particle flow includes using a diagonal approximation to the Gauss-Newton approximation.

In Example 14, Example 13 can further include, wherein the diagonal approximation includes performing Gauss-Newton approximation per weight.

Example 15 includes a device comprising a memory device including instructions stored thereon, and processing circuitry coupled to the memory device, the processing circuitry configured to execute the instructions, the instructions, when executed by the processing circuitry cause the processing circuitry to perform operations for training and operating a Bayesian neural network (BNN), the operations comprising initializing particles that each individually represent pointwise values of respective NN parameters of NNs that collectively represent a distribution of parameters of the BNN, optimizing, using training particle flow, the particles resulting in optimized distributions for the parameters, determining a prediction distribution using the optimized distributions for the parameters and predictions from each of the NNs, and providing a marginalized distribution representative of the prediction distribution.

In Example 16, Example 15 can further include, wherein training particle flow includes a particle flow technique used in a Daum-Huang particle filter with internal states and measurements replaced with the weights and truth values, respectively.

In Example 17, at least one of Examples 15-16 can further include, wherein each particle within the set of particles represents all NN network parameters of an instantiation of the NNs that collectively represent the distribution of parameters of the BNN.

In Example 18, at least one of Examples 15-17 can further include, wherein training particle flow includes iteratively evolving values of the network parameters along a log-homotopy.

In Example 19, at least one of Examples 15-18 can further include, wherein training particle flow includes using a Gauss-Newton approximation to a Hessian matrix in determining drift and diffusion of the particles.

In Example 20, Example 19 can further include, wherein training particle flow includes using a diagonal approximation to the Gauss-Newton approximation, the diagonal approximation includes performing Gauss-Newton approximation per weight.

Although an embodiment has been described with reference to specific example embodiments, it will be evident that various modifications and changes may be made to these embodiments without departing from the broader spirit and scope of the invention. Accordingly, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense. The accompanying drawings that form a part hereof, show by way of illustration, and not of limitation, specific embodiments in which the subject matter may be practiced. The embodiments illustrated are described in sufficient detail to enable those skilled in the art to practice the teachings disclosed herein. Other embodiments may be utilized and derived therefrom, such that structural and logical substitutions and changes may be made without departing from the scope of this disclosure. This Detailed Description, therefore, is not to be taken in a limiting sense, and the scope of various embodiments is defined only by the appended claims, along with the full range of equivalents to which such claims are entitled. 

What is claimed is:
 1. A method for training and operating a Bayesian neural network (BNN), the method comprising: initializing particles that each individually represent pointwise values of respective NN parameters of NNs that collectively represent a distribution of parameters of the BNN; optimizing, using training particle flow, the particles resulting in optimized distributions for the parameters; determining a prediction distribution using the optimized distributions for the parameters and predictions from each of the NNs; and providing a marginalized distribution representative of the prediction distribution.
 2. The method of claim 1, wherein training particle flow includes a particle flow technique used in a Daum-Huang particle filter with internal states and measurements replaced with the weights and truth values, respectively.
 3. The method of claim 1, wherein each particle within the set of particles represents all NN network parameters of an instantiation of the NNs that collectively represent the distribution of parameters of the BNN.
 4. The method of claim 1, wherein training particle flow includes iteratively evolving values of the network parameters along a log-homotopy.
 5. The method of claim 1, wherein training particle flow includes using a Gauss-Newton approximation to a Hessian matrix in determining drift and diffusion of the particles.
 6. The method of claim 5, wherein training particle flow includes using a diagonal approximation to the Gauss-Newton approximation.
 7. The method of claim 6, wherein the diagonal approximation includes performing Gauss-Newton approximation per weight.
 8. A non-transitory machine-readable medium including instructions that, when executed by a machine, cause the machine to perform operations for training and operating a Bayesian neural network (BNN) comprising: initializing particles that each individually represent pointwise values of respective NN parameters of NNs that collectively represent a distribution of parameters of the BNN; optimizing, using training particle flow, the particles resulting in optimized distributions for the parameters; determining a prediction distribution using the optimized distributions for the parameters and predictions from each of the NNs; and providing a marginalized distribution representative of the prediction distribution.
 9. The non-transitory machine-readable medium of claim 8, wherein training particle flow includes a particle flow technique used in a Daum-Huang particle filter with internal states and measurements replaced with the weights and truth values, respectively.
 10. The non-transitory machine-readable medium of claim 8, wherein each particle within the set of particles represents all NN network parameters of an instantiation of the NNs that collectively represent the distribution of parameters of the BNN.
 11. The non-transitory machine-readable medium of claim 8, wherein training particle flow includes iteratively evolving values of the network parameters along a log-homotopy.
 12. The non-transitory machine-readable medium of claim 8, wherein training particle flow includes using a Gauss-Newton approximation to a Hessian matrix in determining drift and diffusion of the particles.
 13. The non-transitory machine-readable medium of claim 12, wherein training particle flow includes using a diagonal approximation to the Gauss-Newton approximation.
 14. The non-transitory machine-readable medium of claim 13, wherein the diagonal approximation includes performing Gauss-Newton approximation per weight.
 15. A device comprising: a memory device including instructions stored thereon; processing circuitry coupled to the memory device, the processing circuitry configured to execute the instructions, the instructions, when executed by the processing circuitry cause the processing circuitry to perform operations for training and operating a Bayesian neural network (BNN), the operations comprising: initializing particles that each individually represent pointwise values of respective NN parameters of NNs that collectively represent a distribution of parameters of the BNN; optimizing, using training particle flow, the particles resulting in optimized distributions for the parameters; determining a prediction distribution using the optimized distributions for the parameters and predictions from each of the NNs; and providing a marginalized distribution representative of the prediction distribution.
 16. The device of claim 15, wherein training particle flow includes a particle flow technique used in a Daum-Huang particle filter with internal states and measurements replaced with the weights and truth values, respectively.
 17. The device of claim 15, wherein each particle within the set of particles represents all NN network parameters of an instantiation of the NNs that collectively represent the distribution of parameters of the BNN.
 18. The device of claim 15, wherein training particle flow includes iteratively evolving values of the network parameters along a log-homotopy.
 19. The device of claim 15, wherein training particle flow includes using a Gauss-Newton approximation to a Hessian matrix in determining drift and diffusion of the particles.
 20. The device of claim 19, wherein training particle flow includes using a diagonal approximation to the Gauss-Newton approximation, the diagonal approximation includes performing Gauss-Newton approximation per weight. 